(calculate-lisp-indent): In the
authorThien-Thi Nguyen <ttn@gnuvola.org>
Sat, 21 Jul 2007 09:05:21 +0000 (09:05 +0000)
committerThien-Thi Nguyen <ttn@gnuvola.org>
Sat, 21 Jul 2007 09:05:21 +0000 (09:05 +0000)
case of alignment under a constant symbol, find and consider
the sexp actually at indentation to be the "last sexp".

lisp/emacs-lisp/lisp-mode.el

index 374d3ae2327e90ec06c00ad9f6a2d41a8bdf5b26..3160af5d80d42f311c8897caf3fd7450f6819bdf 100644 (file)
@@ -932,6 +932,16 @@ is the buffer position of the start of the containing expression."
                        (goto-char indent-point)
                        (skip-chars-forward " \t")
                        (looking-at ":"))
+                     ;; The last sexp may not be at the indentation
+                     ;; where it begins, so find that one, instead.
+                     (save-excursion
+                       (goto-char calculate-lisp-indent-last-sexp)
+                       (while (and (not (looking-back "^[ \t]*"))
+                                   (or (not containing-sexp)
+                                       (< (1+ containing-sexp) (point))))
+                         (forward-sexp -1)
+                         (backward-prefix-chars))
+                       (setq calculate-lisp-indent-last-sexp (point)))
                      (> calculate-lisp-indent-last-sexp
                         (save-excursion
                           (goto-char (1+ containing-sexp))